// 所有修改获取商品list 字段的代码
import { ref } from 'vue'
import { findSubCategoryGoods } from '@/api/category'
export function useToggleFilterData (reqParams, loadGoodsList, goodsListRef) {
  // 切换选中状态
  function toggleSelected (curItem, parent) {
    // 把自己的同类selected设置为false 把自己设置为true
    // console.log(curItem)
    parent.properties.forEach((item) => {
      item.selected = false
    })
    curItem.selected = true
    // 修改接口子段值
    // 当出现parent是重复的 就保留最后一项
    const index = reqParams.attrs.findIndex(attr => attr.groupName === parent.name)
    if (index > -1) {
      // 代表找到了  删除
      reqParams.attrs.splice(index, 1)
    }
    reqParams.attrs.push({
      groupName: parent.name,
      propertyName: curItem.name
    })
    // 如果点击的是全部 将reqParams.attrs置空
    if (curItem.id === null) {
      // 把当前所属项删除

      reqParams.attrs = []
    }
    reqParams.page = 1
    // 再重新发起接口
    loadGoodsList()
  }

  // 排序区域
  const curSortTypeRef = ref(null)
  // 维护一个数组
  const curSortTypeListRef = ref([
    { name: '默认排序', type: null, id: 0 },
    { name: '最新商品', type: 'publishTime', id: 1 },
    { name: '最高人气', type: 'orderNum', id: 2 },
    { name: '评论最多', type: 'evaluateNum', id: 3 }
  ])
  function toggleSort (sortType) {
    curSortTypeRef.value = sortType
    // 把传下来的sortType交给 reqParams.sortField
    reqParams.sortField = sortType
    reqParams.page = 1
    loadGoodsList()
  }
  // 点击品牌
  function toggleBrand (brand) {
    reqParams.brandId = brand.id
    reqParams.page = 1
    loadGoodsList()
  }

  const isFinishedRef = ref(false) // 表示没有加载完
  const isLoadingRef = ref(false) // 代表是否在加载中
  async function loadNext () {
    // 刚执行这个方法的时候把isLoadingRef改为true  在执行完之后再改成false
    isLoadingRef.value = true
    console.log('加载了下一页数据')
    // 加载了下一页数据
    reqParams.page++
    const res = await findSubCategoryGoods(reqParams)
    // 全部加载完毕 通知子组件 不要重复处罚load事件
    // 通过父传子 把当前 isFinished状态 传给子组件 在子组件内部做判断
    if (res.data.result.items.length === 0) {
      isFinishedRef.value = true
    }
    goodsListRef.value = [...goodsListRef.value, ...res.data.result.items]
    // 在执行完之后再将isLoadingRef改成false
    isLoadingRef.value = false
  }

  return {
    toggleSelected,
    curSortTypeListRef,
    curSortTypeRef,
    toggleSort,
    toggleBrand,
    loadNext,
    isFinishedRef,
    isLoadingRef
  }
}
